.TH std::pmr::monotonic_buffer_resource::do_allocate 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::pmr::monotonic_buffer_resource::do_allocate \- std::pmr::monotonic_buffer_resource::do_allocate

.SH Synopsis
   virtual void* do_allocate( std::size_t bytes, std::size_t alignment    \fI(since C++17)\fP
   );

   Allocates storage.

   If the current buffer has sufficient unused space to fit a block with the specified
   size and alignment, allocates the return block from the current buffer.

   Otherwise, this function allocates a new buffer by calling
   upstream_resource()->allocate(n, m), where n is not less than the greater of bytes
   and the next buffer size and m is not less than alignment. It sets the new buffer as
   the current buffer, increases the next buffer size by an implementation-defined
   growth factor (which is not necessarily integral), and then allocates the return
   block from the newly allocated buffer.

.SH Return value

   A pointer to allocated storage of at least bytes bytes in size, aligned to the
   specified alignment if such alignment is supported, and to alignof(std::max_align_t)
   otherwise.

.SH Exceptions

   Throws nothing unless calling allocate() on the upstream memory resource throws.

.SH See also

   allocate    allocates memory
               \fI(public member function of std::pmr::memory_resource)\fP
   do_allocate allocates memory
   \fB[virtual]\fP   (virtual private member function of std::pmr::memory_resource)
